﻿package WebModule::DB;
use strict;
use warnings;

=head1  NAME

WebModule::DB - 基于Rose::DB的数据库层

=head1  SNOPSIS

use WebModule::DB

sub get_db {
    
    my $db = WebModule::DB->new_or_cached;

    return $db;
}

=head1  DESCRIPTION

由于使用CGI::Application, 没有办法从C::A中集成读配置。
Rose::DB必须subclass, 然后在subclass里register_db,
因此使用Config::Auto模块和自定义的WebCoreConfig模块
直接从模块中读入配置，然后register_db

Mike还是决定在缓存中使用一次Rose::DB::Ojbect

=cut

use base qw/Rose::DB/;
use Config::Auto;
use WebCoreConfig qw/$config_file/;

our $config = Config::Auto::parse($config_file, format=>'perl');

__PACKAGE__->use_private_registry;

#注册数据库

__PACKAGE__->register_db(
    driver=>$config->{'db_driver'},
    database=>$config->{'db_name'},
    host=>$config->{'db_host'},
    username=>$config->{'db_user'},
    password=>$config->{'db_pw'}
);

__PACKAGE__->default_connect_options(
    $config->{'db_attr'});

1;
